-
Notifications
You must be signed in to change notification settings - Fork 873
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make OpenTelemetry-API Bridge and dependent instrumentations work with indy #11578
Conversation
Currently waiting on #11582 to fix the independent test failures. |
# Conflicts: # instrumentation/reactor/reactor-3.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/reactor/v3_4/operator/ContextPropagationOperator34InstrumentationModule.java
* | ||
* @return the list of packages (without trailing dots) | ||
*/ | ||
default List<String> agentPackagesToHide() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[minor] we need to cover this in https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/11546/files do you mind opening a PR on my PR to cover this as well ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd wait on approvals on this PR before doing the documentation (e.g. the method name might be changed). But I will update the docs afterwards
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not sure if it's worth it, but this reminds me of similar method we have which uses a fancy optimized Trie structure:
Line 29 in 9dd11ff
IgnoredTypesBuilder ignoreClass(String classNameOrPrefix); |
// These are helper classes injected by api-version specific instrumentation modules | ||
// We don't want to fall back to accidentally trying to load those from the agent CL | ||
// when they haven't been injected | ||
return Collections.singletonList("io.opentelemetry.javaagent.instrumentation.opentelemetryapi"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't follow why this is only a problem for this particular instrumentation? thanks
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems like this instrumentation is the only one using this mechanism: All other api-bridge instrumentations seem to only provide the helpers, the opentelemetry-api-1.0
instrumentation is the one glueing them to the application code.
To give a bit more detail about the problem, here is an example lookup of such a helper class:
Line 61 in a453bc6
"io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.ApplicationOpenTelemetry127"); |
The 1.0
instrumentation looks for a OpenTelemetry
implementation class (=the helper) provided by the 1.27
instrumentation to use that if available.
So with non-indy, this helper class will only be available if the 1.27
instrumentation was actually applied, because only then this helper is injected. E.g. if the application ships the API in version 1.26
, this lookup would fail.
This check doesn't quite work that way for invokedynamic instrumentations. In that case, we have three classloaders:
- The application classloader containing the application OpenTelemetry API
- The agent classloader (containing all the .class resources of the instrumentations)
- The
InstrumentationModuleClassloader
which will have the application classloader and agent classloader both as parents
When now an instrumentation is applied, its advice code and helpers are loaded into the InstrumentationModuleClassloader
. The module-grouping
feature ensures that all opentelemetry-api instrumentations use the same InstrumentationModuleClassloader
instance.
Going back to our example where the application ships the OpenTelemetry API in 1.26
, the following would happen:
- The
1.0
instrumentation tries to lookup the helper provided by the1.27
instrumentation - This helper is not injected into the
InstrumentationModuleClassloader
, because the instrumentation wasn't applied - However, the
InstrumentationModuleClassloader
will now look in its parents for said helper. The helper will now be loaded by the agent classloader (because it contains the.class
files of the helper and therefore can load them)
The mechanism of package hiding introduced in this PR prevents the last step from happening: We disallow the helper to be looked up from the agent classloader and therefore the class loading fails as it should.
Note that once we commit to invokedynamic and remove non-invokedynamic instrumentations, we can simplify this.
A lot of this "trickery" is only required because right now when we inject helpers into application classloaders, those classes are also loaded immedatiely. With invokedynamic and the InstrumentationModuleClassloader
this follows the classic java model of the classloading knowing how to load its classes, but only actually loading them on demand.
For the OpenTelemetry API bridge this means we can then just have the bridge for all versions included and simply at runtime (instead of instrumentation time) select the proper bridge implementation. We have actually done exactly that in the elastic-apm-agent for our OpenTelemetry Metrics API Bridge.
This means that the bridge code is actually completely independent of the agent/instrumentation and can be in my opinion be more easily maintained. I'm planning/proposing to take the same approach for the Otel-agent once we've dropped support for non-invokedynamic instrumentation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI another neat thing about that bridge structure is that it allows to add a test for detecting unimplemented default methods:
https://github.com/elastic/apm-agent-java/blob/main/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-metrics-bridge-parent/apm-opentelemetry-metrics-bridge-latest/src/test/java/co/elastic/apm/agent/opentelemetry/metrics/bridge/BridgeExhaustivenessTest.java#L43
So that test would fail if we upgrade the SDK/API and the bridge is missing a newly added method. I don't know if something like that is already in place for the current bridge implementation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks, that helps me a lot, a couple of questions:
The helper will now be loaded by the agent classloader (because it contains the .class files of the helper and therefore can load them)
would we ever want any helper classes to be loaded by agent classloader? (just wondering if we can do this universally somehow instead of per instrumentation module)
Note that once we commit to invokedynamic and remove non-invokedynamic instrumentations, we can simplify this.
does that mean we can remove agentPackagesToHide()
at that point?
I don't know if something like that is already in place for the current bridge implementation.
yes, this is handled by muzzle, check out #1193
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
would we ever want any helper classes to be loaded by agent classloader? (just wondering if we can do this universally somehow instead of per instrumentation module)
Yes, this should be the preferred mechanism for communicating across instrumentation modules.
The "module-group" feature where we place multiple instrumentations in the same classloader was mainly introduced to have an easy way of getting the existing instrumentations to work. They currently communicate by explicitly using classes which would have been injected into the app CL before.
Ideally instrumentation which offer a service to other instrumentations should rather do this by publishing an API to the agent-CL which will then be accessible to all other instrumentations, independent of their classloader.
E.g. if an instrumentation is responsible for wrapping some application types in order to preserve context, they could offer just an API for unwrapping instead of having all their implementation details and dependencies exposed to other instrumentation modules by sharing the classloader. This should make instrumentations and their interactions easier to understand, because then there are clear borders between them.
At the moment, classes can be explicitly loaded into the agent CL by returnign false for those via the InstrumentationModule.isHelperClass
, which might look a bit confusing due to the old naming.
That said, what we could do is ensure that no class for which isHelperClass
is true is ever loaded from the agent-CL for a given module-group. Do you want me to try that maybe?
does that mean we can remove agentPackagesToHide() at that point?
agentPackagesToHide
will actually be required when we remove shading: As soon as we do that, there will be two opentelemetry-APIs with the same name visible to the bridge InstrumentationModuleClassloader
: The opentelemetry-api from the agent and from the app.
Normally, classes from the agent take precedence (so that application dependencies don't accidentally replace stuff we ship in the agent). In this case, we have the edge case that we actually do want to link against the application opentelemetry-api instead of the one from the agent. Therefore we need to hide the one from the agent and call it via some proxy-api (classes injected into the agent-cl delegating to the agent opentelemetry-API) instead.
yes, this is handled by muzzle, check out #1193
IINM that one only covers abstract methods, inherited default methods are not considered as abstract. But let's not go down that rabbit hole, that is a topic for the future
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A lot of this "trickery" is only required because right now when we inject helpers into application classloaders, those classes are also loaded immedatiely.
FYI we used to do this, but now we only use this for the boot loader. See https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/internal/internal-class-loader/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/classloader/LoadInjectedClassInstrumentation.java
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wasn't aware of that, thanks for pointing this out!
...o/opentelemetry/javaagent/tooling/instrumentation/indy/InstrumentationModuleClassLoader.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it is fine for now but we'll probably need to come back to this later and see whether we can improve the api.
* chore(deps): update gradle/actions action to v3.4.2 (main) (open-telemetry#11598) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Bump version in api diff compare (open-telemetry#11615) * chore(deps): update graalvm/setup-graalvm action to v1.2.2 (main) (open-telemetry#11624) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Simplify jetty9 http client instrumentation (open-telemetry#11595) * Merge change log updates from release/v1.33.x (open-telemetry#11628) * fix(deps): update quarkus packages to v3.11.3 (main) (patch) (open-telemetry#11629) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * remove conditional indy test in CI (open-telemetry#11631) * make aws-sdk indy compatible (open-telemetry#11552) * fix(deps): update quarkus packages to v3.12.0 (main) (minor) (open-telemetry#11630) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Remove aws sqs latest dep limit (open-telemetry#11643) * Fix deprecation warning in build script (open-telemetry#11642) * fix(deps): update dependency org.springframework.boot:spring-boot-starter-web to v3.3.1 (main) (open-telemetry#11644) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * re-use logic for http client configuration (open-telemetry#11620) Co-authored-by: Trask Stalnaker <[email protected]> * fix link (open-telemetry#11656) * fix(deps): update dependency net.ltgt.gradle:gradle-errorprone-plugin to v4.0.1 (main) (open-telemetry#11652) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Influxdb client: don't fill db.statement for create/drop database and write operations (open-telemetry#11557) * Update docs for bundled exporters (open-telemetry#11662) * Improve test error report (open-telemetry#11664) * Use more @ConditionalOnEnabledInstrumentation (open-telemetry#11665) * Fix typo (open-telemetry#11672) * Remove reflection from builder (open-telemetry#11673) * fix(deps): update junit5 monorepo to v5.10.3 (main) (patch) (open-telemetry#11681) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * don't use test keystore for vaadin (open-telemetry#11679) * Add address and port assertions (open-telemetry#11668) * Update http metrics to the latest version (open-telemetry#11659) * fix(deps): update armeria packages to v1.29.1 (main) (patch) (open-telemetry#11686) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency io.grpc:grpc-bom to v1.65.0 (main) (open-telemetry#11689) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Fix running ./gradlew tasks (open-telemetry#11692) * chore(deps): update github/codeql-action action to v3.25.11 (main) (open-telemetry#11699) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update groovy monorepo (main) (patch) (open-telemetry#11706) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix build for graalvm native (open-telemetry#11709) * add javalin instrumentation (open-telemetry#11587) * fix(deps): update dependency io.opentelemetry.proto:opentelemetry-proto to v1.3.2-alpha (main) (open-telemetry#11715) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Fix kafka graalvm native (open-telemetry#11714) * cleanup log filter (open-telemetry#11719) * fix(deps): update dependency org.owasp:dependency-check-gradle to v10 (main) (open-telemetry#11720) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * config properties support for spring starter clients (open-telemetry#11605) * fix(deps): update dependency org.owasp:dependency-check-gradle to v10.0.1 (main) (open-telemetry#11722) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * rebuild when labels change, so that we can trigger the right actions (open-telemetry#11725) * Add GraalVM Kafka hints (open-telemetry#11735) * Fix collector conf for overhead tests (open-telemetry#11730) * fix(deps): update quarkus packages to v3.12.1 (main) (patch) (open-telemetry#11732) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Convert jsf jakarta tests from groovy to java (open-telemetry#11694) * Fix GraalVM hint (open-telemetry#11737) * Jsf: simplify asserting exception (open-telemetry#11736) * Convert jsf javax tests from groovy to java (open-telemetry#11711) * fix(deps): update dependency commons-logging:commons-logging to v1.3.3 (main) (open-telemetry#11740) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency org.codehaus.mojo:animal-sniffer-annotations to v1.24 (main) (open-telemetry#11741) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Replace junit4 @test annotation with junit5 annotation (open-telemetry#11745) * chore(deps): update actions/upload-artifact action to v4.3.4 (main) (open-telemetry#11748) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update jackson packages to v2.17.2 (main) (patch) (open-telemetry#11750) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lauri Tulmin <[email protected]> * fix(deps): update dependency org.owasp:dependency-check-gradle to v10.0.2 (main) (open-telemetry#11753) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Exclude javalin 3.2.0 from muzzle (open-telemetry#11766) * Update the OpenTelemetry SDK version to 1.40.0 (open-telemetry#11752) Co-authored-by: Lauri Tulmin <[email protected]> * support otel.instrumentation.common.default-enabled in spring starter (open-telemetry#11746) * fix(deps): update dependency org.codenarc:codenarc to v3.5.0 (main) (open-telemetry#11758) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Add link to SDK configuration page (open-telemetry#11729) * Build image for testing early jdk8 (open-telemetry#11594) * fix(deps): update byte buddy packages to v1.14.18 (main) (patch) (open-telemetry#11767) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Trask Stalnaker <[email protected]> * Support tracing the ClickHouse Java HTTP client (open-telemetry#11660) * support jettyclient 12 (open-telemetry#11519) Co-authored-by: Lauri Tulmin <[email protected]> Co-authored-by: Trask Stalnaker <[email protected]> * Fix build (open-telemetry#11776) * chore(deps): update gradle/actions action to v3.4.2 (main) (open-telemetry#11770) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Enable early jdk8 test (open-telemetry#11777) * Add Pulsar MessagingProducerMetrics (open-telemetry#11591) Co-authored-by: Lauri Tulmin <[email protected]> Co-authored-by: Steve Rao <[email protected]> * chore(deps): update actions/setup-node action to v4.0.3 (main) (open-telemetry#11780) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency org.assertj:assertj-core to v3.26.3 (main) (open-telemetry#11781) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix windows benchmark fail (open-telemetry#11698) * Alter instrumentation suppression behavior (open-telemetry#11640) * Propagate otel context through custom aws client context for lambda direct calls (open-telemetry#11675) Co-authored-by: Lauri Tulmin <[email protected]> * fix(deps): update armeria packages to v1.29.2 (main) (patch) (open-telemetry#11785) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency io.quarkus:quarkus-bom to v3.12.2 (main) (open-telemetry#11787) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update plugin io.quarkus to v3.12.2 (main) (open-telemetry#11789) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Spring autoconf deps (open-telemetry#11784) * GraalVM native support for the OpenTelemetry annotations (open-telemetry#11757) Co-authored-by: Trask Stalnaker <[email protected]> * Use config properties for spring starter (http server) (open-telemetry#11667) Co-authored-by: Lauri Tulmin <[email protected]> Co-authored-by: Trask Stalnaker <[email protected]> * Update @EnableOpenTelemetry javadoc (open-telemetry#11799) * chore(deps): update github/codeql-action action to v3.25.12 (main) (open-telemetry#11808) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency io.grpc:grpc-bom to v1.65.1 (main) (open-telemetry#11804) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dockerjavaversion to v3.4.0 (main) (minor) (open-telemetry#11802) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * rename spring autoconfigure to autoconfigure-2 (open-telemetry#11800) * make spring starter stable (open-telemetry#11763) * chore(deps): update dependency gradle to v8.9 (main) (open-telemetry#11798) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update ubuntu docker tag to v24 (main) (open-telemetry#11771) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Fix http.server.active_requests metric with async requests (open-telemetry#11638) Co-authored-by: Helen <[email protected]> Co-authored-by: Trask Stalnaker <[email protected]> * Rename spring-boot-autoconfigure artifacts (open-telemetry#11815) * fix(deps): update dependency org.owasp:dependency-check-gradle to v10.0.3 (main) (open-telemetry#11834) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency commons-codec:commons-codec to v1.17.1 (main) (open-telemetry#11830) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Remove unneeded groovy dependencies from lambda tests (open-telemetry#11828) * Restructure to have a single spring-boot-autoconfigure artifact (open-telemetry#11826) * chore(deps): update gradle/actions action to v3.5.0 (main) (open-telemetry#11824) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Update change log for v2.6.0 release (open-telemetry#11816) * Update version to 2.7.0-SNAPSHOT (open-telemetry#11839) Co-authored-by: Trask Stalnaker <[email protected]> * fix(deps): update testcontainers-java monorepo to v1.20.0 (main) (minor) (open-telemetry#11846) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update quarkus packages to v3.12.3 (main) (patch) (open-telemetry#11842) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Merge change log updates from release/v2.6.x (open-telemetry#11840) * Update api diff after release (open-telemetry#11850) * Add span baggage processor (open-telemetry#11697) * Fix ClickHouse tracing when database name not included in connection string (open-telemetry#11852) * fix(deps): update dependency io.netty:netty-bom to v4.1.112.final (main) (open-telemetry#11864) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update github/codeql-action action to v3.25.13 (main) (open-telemetry#11862) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency org.springframework.boot:spring-boot-starter-web to v3.3.2 (main) (open-telemetry#11855) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update errorproneversion to v2.29.2 (main) (minor) (open-telemetry#11836) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update bellsoft/liberica-openjdk-alpine docker tag to v21.0.4 (main) (open-telemetry#11863) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency org.apache.commons:commons-lang3 to v3.15.0 (main) (open-telemetry#11848) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency com.gradle.develocity:com.gradle.develocity.gradle.plugin to v3.17.6 (main) (open-telemetry#11875) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update plugin com.gradle.develocity to v3.17.6 (main) (open-telemetry#11874) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update docker/login-action action to v3.3.0 (main) (open-telemetry#11877) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Consolidate github action renovate PRs (open-telemetry#11829) * Reformat supported libraries doc (open-telemetry#11889) * fix(deps): update quarkus packages to v3.13.0 (main) (minor) (open-telemetry#11894) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency com.google.protobuf:protobuf-java-util to v3.25.4 (main) (open-telemetry#11897) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Fix missing throw statement in RestClientWrapper (open-telemetry#11892) (open-telemetry#11893) * Merge change log updates from release/v1.33.x (open-telemetry#11904) * fix(deps): update armeria packages to v1.29.3 (main) (patch) (open-telemetry#11906) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update github actions (main) (open-telemetry#11910) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency com.uber.nullaway:nullaway to v0.11.1 (main) (open-telemetry#11916) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update armeria packages to v1.29.4 (main) (patch) (open-telemetry#11923) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Fix latest dep tests (open-telemetry#11925) * Convert jsp 2.3 tests from groovy to java (open-telemetry#11827) * fix(deps): update testcontainers-java monorepo to v1.20.1 (main) (patch) (open-telemetry#11931) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Fix broken link (open-telemetry#11935) * Allow any types in invokedynamic advice method signatures (open-telemetry#11873) Co-authored-by: Lauri Tulmin <[email protected]> * Improve tomcat version detection (open-telemetry#11936) * Add @jaydeluca as triager (open-telemetry#11937) * Update kafka docker image (open-telemetry#11938) * chore(deps): update actions/upload-artifact action to v4.3.5 (main) (open-telemetry#11943) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Fix class cast exception, noop meter does not implement incubating api (open-telemetry#11934) * Executors indy support (open-telemetry#11738) * idempotent license report (open-telemetry#11810) Co-authored-by: Lauri Tulmin <[email protected]> * chore(deps): update plugin org.jetbrains.kotlin.jvm to v2.0.10 (main) (open-telemetry#11955) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update slf4j monorepo to v2.0.14 (main) (patch) (open-telemetry#11957) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lauri Tulmin <[email protected]> * fix(deps): update dependency org.awaitility:awaitility to v4.2.2 (main) (open-telemetry#11960) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency io.quarkus:quarkus-bom to v3.13.1 (main) (open-telemetry#11962) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update plugin io.quarkus to v3.13.1 (main) (open-telemetry#11966) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency org.apache.commons:commons-lang3 to v3.16.0 (main) (open-telemetry#11967) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency io.grpc:grpc-bom to v1.66.0 (main) (open-telemetry#11972) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update slf4j monorepo to v2.0.15 (main) (patch) (open-telemetry#11976) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lauri Tulmin <[email protected]> * Update shadow plugin to new version and coordinates (open-telemetry#11979) * Improve akka route handling with java dsl (open-telemetry#11926) * fix(deps): update dependency org.slf4j:slf4j-simple to v2.0.15 (main) (open-telemetry#11981) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Ignore alibaba fastjson ASMClassLoader (open-telemetry#11954) * fix(deps): update quarkus packages to v3.13.2 (main) (patch) (open-telemetry#11983) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Convert cdi-testing test from groovy to java (open-telemetry#11982) * fix(deps): update slf4j monorepo to v2.0.16 (main) (patch) (open-telemetry#11989) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lauri Tulmin <[email protected]> * chore(deps): update github actions (main) (open-telemetry#11995) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update gradle/actions action to v4 (main) (open-telemetry#11996) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update errorproneversion to v2.30.0 (main) (minor) (open-telemetry#11991) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lauri Tulmin <[email protected]> * Use `aws-lambda-java-serialization` library, which is available by default, while deserializing input and serializing output (open-telemetry#11868) * fix(deps): update armeria packages to v1.30.0 (main) (minor) (open-telemetry#12001) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Influxdb indy support (open-telemetry#11710) Co-authored-by: Jonas Kunz <[email protected]> Co-authored-by: Lauri Tulmin <[email protected]> * Force dynamic typing on AssignReturned annotations (open-telemetry#11884) * Update the OpenTelemetry SDK version to 1.41.0 (open-telemetry#11985) Co-authored-by: Lauri Tulmin <[email protected]> * Fix building wildfly docker image (open-telemetry#11998) * Add assert inverse to ktor2 muzzle configuration (open-telemetry#11948) * chore(deps): update dependency gradle to v8.10 (main) (open-telemetry#12014) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Closing a kafka producer/consumer should not disable metrics from other consumers/producers (open-telemetry#11975) * Logback appender: map timestamp in nanoseconds if possible (open-telemetry#11807) (open-telemetry#11974) * Save ILoggingEvent.getArgumentArray() arguments from Logback (open-telemetry#11865) Co-authored-by: Lauri Tulmin <[email protected]> * use DefaultHttpClientInstrumenterBuilder and DefaultHttpServerInstrumenterBuilder for armeria (open-telemetry#11797) Co-authored-by: Trask Stalnaker <[email protected]> * Fix ending span in Ktor plugin (open-telemetry#11726) * Use stable semconv for Java17 (open-telemetry#11914) Co-authored-by: Lauri Tulmin <[email protected]> * fix(deps): update dependency commons-cli:commons-cli to v1.9.0 (main) (open-telemetry#12017) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Limit vaadin 14 latest dep version (open-telemetry#12025) * Add Pulsar Consumer metrics (open-telemetry#11891) Co-authored-by: Lauri Tulmin <[email protected]> Co-authored-by: Steve Rao <[email protected]> * Fix logback appender test (open-telemetry#12027) * fix(deps): update junit5 monorepo to v5.11.0 (main) (minor) (open-telemetry#12010) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lauri Tulmin <[email protected]> * fix(deps): update dependency ch.qos.logback:logback-classic to v1.5.7 (main) (open-telemetry#12029) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update plugin com.github.jk1.dependency-license-report to v2.9 (main) (open-telemetry#12030) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Fix netty memory leak (open-telemetry#12003) * Update change log (open-telemetry#12019) * fix(deps): update byte buddy packages to v1.14.19 (main) (patch) (open-telemetry#12033) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Trask Stalnaker <[email protected]> * Update version to 2.8.0-SNAPSHOT (open-telemetry#12037) Co-authored-by: Lauri Tulmin <[email protected]> * Update api diffs (open-telemetry#12045) * chore(deps): update github/codeql-action action to v3.26.2 (main) (open-telemetry#12047) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update guava packages to v33.3.0-jre (main) (minor) (open-telemetry#12040) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency com.gradle.develocity:com.gradle.develocity.gradle.plugin to v3.18 (main) (open-telemetry#12051) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update plugin com.gradle.develocity to v3.18 (main) (open-telemetry#12050) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency commons-logging:commons-logging to v1.3.4 (main) (open-telemetry#12053) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency com.uber.nullaway:nullaway to v0.11.2 (main) (open-telemetry#12057) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Try to fix disabling renovate updates for spring boot (open-telemetry#12059) * [improve][pulsar] Enhance SendCallback to address PIP-363 (open-telemetry#11648) Co-authored-by: Lauri Tulmin <[email protected]> Co-authored-by: Lauri Tulmin <[email protected]> * Delay loading `InetAddressResolverProvider` until after the agent has started (open-telemetry#11987) Co-authored-by: Lauri Tulmin <[email protected]> * Remove unused renovate config (open-telemetry#12060) * fix(deps): update quarkus packages to v3.13.3 (main) (patch) (open-telemetry#12067) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update otelcontribversion to v1.38.0-alpha (main) (minor) (open-telemetry#12061) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lauri Tulmin <[email protected]> * Fix instrumentation for the latest version of ucp (open-telemetry#12052) * JdbcIgnoredTypesConfigurer support Shardingsphere 5.x (open-telemetry#12066) * fix(deps): update quarkus packages to v3.14.0 (main) (minor) (open-telemetry#12074) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * enforce static imports (open-telemetry#12009) * chore(deps): update plugin org.jetbrains.kotlin.jvm to v2.0.20 (main) (open-telemetry#12081) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * make netty-* indy compatible (open-telemetry#11559) Co-authored-by: Jonas Kunz <[email protected]> Co-authored-by: Trask Stalnaker <[email protected]> * make hibernate-* indy compatible (open-telemetry#11553) * fix(deps): update dependency org.springframework.boot:spring-boot-starter-web to v3.3.3 (main) (open-telemetry#12087) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update github/codeql-action action to v3.26.5 (main) (open-telemetry#12105) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency checkstyle to v10.18.0 (main) (open-telemetry#12103) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Add workflow to complete 1.33.6 to main (open-telemetry#12107) * fix(deps): update byte buddy packages to v1.15.0 (main) (minor) (open-telemetry#12094) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lauri Tulmin <[email protected]> * Fix rabbitmq NullPointerException (open-telemetry#12109) * Merge change log updates from release/v1.33.x (open-telemetry#12114) * Remove temporary workflow (open-telemetry#12115) * Name is not needed for annotation value parameter (open-telemetry#12113) * Convert apache-httpclient-2.0 tests from groovy to java (open-telemetry#12102) Co-authored-by: Steve Rao <[email protected]> * convert spring integration tests to java (open-telemetry#11999) Co-authored-by: Jay DeLuca <[email protected]> * Add network peer address attributes to the span for the `okhttp-3.0` instrumentation (open-telemetry#12012) * Add support for cxf 4.0 jaxws (open-telemetry#12077) * fix(deps): update dependency org.mockito:mockito-core to v5.13.0 (main) (open-telemetry#12123) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update quarkus packages to v3.14.1 (main) (patch) (open-telemetry#12129) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * indy advice docs & migration procedure (open-telemetry#11546) * fix(deps): update errorproneversion to v2.31.0 (main) (minor) (open-telemetry#12134) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Update units of time based metrics from millis to seconds for Java17 … (open-telemetry#12084) * Added rules for capturing Apache Camel metrics exposed by JMX MBeans (open-telemetry#11901) * Fix play-mvc\methods NullPointerException (open-telemetry#12121) * Spring batch tests to java - basic (open-telemetry#12076) * chore(deps): update plugin com.gradle.plugin-publish to v1.2.2 (main) (open-telemetry#12137) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Pin github actions by hash (open-telemetry#12140) * fix(deps): update dependency org.apache.commons:commons-lang3 to v3.17.0 (main) (open-telemetry#12145) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency checkstyle to v10.18.1 (main) (open-telemetry#12150) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update byte buddy packages to v1.15.1 (main) (patch) (open-telemetry#12141) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Lauri Tulmin <[email protected]> * fix(deps): update dependency org.owasp:dependency-check-gradle to v10.0.4 (main) (open-telemetry#12152) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update github actions (main) (open-telemetry#12155) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Fix error span status for successful requests in Ktor (open-telemetry#12161) * Convert opentelemetry-api-1.0 tests from groovy to java (open-telemetry#12133) Co-authored-by: Lauri Tulmin <[email protected]> * convert module apache-dubbo-2.7 test case from groovy to java (open-telemetry#12008) Co-authored-by: Jay DeLuca <[email protected]> * Test whether http client span ends after headers or body is received (open-telemetry#12149) * Remove unused imports (open-telemetry#12165) * Keep junit extensions in static fields (open-telemetry#12166) * fix(deps): update dependency io.netty:netty-bom to v4.1.113.final (main) (open-telemetry#12169) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update quarkus packages to v3.14.2 (main) (patch) (open-telemetry#12167) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * make internal-reflection indy compatible (open-telemetry#12136) Co-authored-by: Jonas Kunz <[email protected]> * Make OpenTelemetry-API Bridge and dependent instrumentations work with indy (open-telemetry#11578) * Make log record asserts similar to trace asserts (open-telemetry#12164) * Enable tests for jedis 2.7.2 (open-telemetry#12175) * Add empty line to separate blocks (open-telemetry#12174) * Fix flaky spring integration test (open-telemetry#12185) * Read timeout in jetty http client tests (open-telemetry#12184) * Make rocketmq span status extractor delegate to default extractor (open-telemetry#12183) * Remove unneeded span status extractor (open-telemetry#12182) * fix(deps): update dependency org.apache.logging.log4j:log4j-bom to v2.24.0 (main) (open-telemetry#12187) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency ch.qos.logback:logback-classic to v1.5.8 (main) (open-telemetry#12189) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency gradle to v8.10.1 (main) (open-telemetry#12191) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update plugin org.graalvm.buildtools.native to v0.10.3 (main) (open-telemetry#12205) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update plugin com.gradleup.shadow to v8.3.1 (main) (open-telemetry#12208) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency com.gradleup.shadow:shadow-gradle-plugin to v8.3.1 (main) (open-telemetry#12209) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update plugin com.gradle.develocity to v3.18.1 (main) (open-telemetry#12211) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency com.gradle.develocity:com.gradle.develocity.gradle.plugin to v3.18.1 (main) (open-telemetry#12212) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * updating .gitignore to ignore workflows except the middleware one * test fix, and reverted to grpc as default otel protocol * Added feature flag for continuous profiling --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Trask Stalnaker <[email protected]> Co-authored-by: Lauri Tulmin <[email protected]> Co-authored-by: OpenTelemetry Bot <[email protected]> Co-authored-by: SylvainJuge <[email protected]> Co-authored-by: Gregor Zeitlinger <[email protected]> Co-authored-by: Jay DeLuca <[email protected]> Co-authored-by: Jean Bisutti <[email protected]> Co-authored-by: crossoverJie <[email protected]> Co-authored-by: Lucas Amoroso <[email protected]> Co-authored-by: Liu Ziming <[email protected]> Co-authored-by: Lauri Tulmin <[email protected]> Co-authored-by: Steve Rao <[email protected]> Co-authored-by: John Bley <[email protected]> Co-authored-by: Helen <[email protected]> Co-authored-by: kyy1996 <[email protected]> Co-authored-by: Jonas Kunz <[email protected]> Co-authored-by: César <[email protected]> Co-authored-by: jason plumb <[email protected]> Co-authored-by: Serkan ÖZAL <[email protected]> Co-authored-by: Jérôme Joslet <[email protected]> Co-authored-by: Igor Suhorukov <[email protected]> Co-authored-by: Mariia Skripchenko <[email protected]> Co-authored-by: Robert Niedziela <[email protected]> Co-authored-by: 道君 <[email protected]> Co-authored-by: Shelby Huang <[email protected]> Co-authored-by: xiepuhuan <[email protected]> Co-authored-by: Luigi De Masi <[email protected]> Co-authored-by: shalk(xiao kun) <[email protected]>
Ensures that the OpenTelemetry API bridge works with
-PtestIndy=true
. Part of #11457.Effectively, this results in the bridge classes being loaded by the
InstrumentationModuleClassloader
instead of being injected into the application classloader. As a result, other instrumentations directly depending on those bridge classes (e.g. reactor) will need to be loaded by the same classloader.This PR also adds a mechanism to hide packages present in the agent classloader for certain instrumentations.
We'll eventually need to use this when we get rid of shading: Then the non-shaded agent opentelemetry-API needs to be hidden from the API-bridge instrumentation in order to link against the application Otel-API.
@open-telemetry/java-instrumentation-approvers : Could someone please add the
testIndy
label to this PR?